package com.woniu.common.utils;

import cn.hutool.jwt.JWTUtil;
import com.alibaba.fastjson2.JSONObject;
import com.woniu.common.dto.UserDto;
import org.springframework.web.server.ServerWebExchange;

/**
 * @program: finance021
 * @description:   用户相关的操作工具类
 * @create: 2024-11-06 11:57
 **/
public class UserUtil {
    /**
     * 从jwt获取用户信息
     * @param jwt
     * @return
     */
    public static UserDto getUser(String jwt){
        // 2、从jwt中取用户信息
        Object user = JWTUtil.parseToken(jwt).getPayload("user");
        //2.1 把user反序列化（使用的json）导入json依赖，创建userDto
        UserDto userDto = JSONObject.parseObject(String.valueOf(user), UserDto.class);

        return userDto;
    }

    /**
     * 从请求头中获取用户信息
     * @param request
     * @return
     */
//    public static UserDto getUser(HttpServletRequest request) {
//        String jwt = request.getHeader("jwt");
//        // 2、从jwt中取出用户信息   拿到载荷user
//        Object user = JWTUtil.parseToken(jwt).getPayload("user");
//        //2.1、把user反序列化（使用的json）导json依赖 ，创建userDto
//        UserDto userDto = JSONObject.parseObject(String.valueOf(user), UserDto.class);
//        return userDto;
//    }

    /**
     * 从请求头获取jwt
     * @param exchange
     * @return
     */
    public static UserDto getUser(ServerWebExchange exchange){
        // 1、从请求头中取jwt
        String jwt = exchange.getRequest().getHeaders().getFirst("jwt");
        // 2、从jwt中取用户信息
        Object user = JWTUtil.parseToken(jwt).getPayload("user");
        //2.1 把user反序列化（使用的json）导入json依赖，创建userDto
        UserDto userDto = JSONObject.parseObject(String.valueOf(user), UserDto.class);

        return userDto;
    }
}
